package com.njhxfz.controller.user;

import com.njhxfz.model.user.UserVo;
import com.njhxfz.service.user.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @类功能说明：
 * @公司名称：南京华讯方舟通讯设备有限公司
 * @作者：zhoujinbing
 * @创建时间：2018/8/13 14:36
 * @版本：V1.0
 */
@org.springframework.stereotype.Controller
@RequestMapping("/user/")
public class UserController {
    @Autowired
    private IUserService userService;

    @RequestMapping("/login")
    public String login() {
        UserVo user = new UserVo();
        user.setUserId("1");
        user.setUserName("test1");
        user.setPassword("123456");

        try {
            userService.addUser(user);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "user/login";
    }

    public static void main(String[] args) {
        Integer[] arrays = {1,2,3,4,5,6,7,8,3,4,5,2,3,8,99};
        //Integer resultIndex = search(arrays,2);
        //swrp(arrays,0,6);
        insertSort(arrays);
    }

    /**
     * @description 二分法（总结：若小于当前索引，则开始索引从当前中间索引+1，重新循环查找，若大于当前索引，则结束索引等于中间索引-1，则重新朝赵，直到找到索引）
     * @method  search
     * @param  [arryas, key]
     * @return int
     * @date: 2018/8/31 9:27
     * @author:zhoujinbing
     */
    public static int search(Integer[] arryas,int key)
    {
        int start = 0;//声明开始索引
        int end = arryas.length-1;//声明结束索引
        while (start <= end)//判断开始是否小于结束索引
        {
            int min = (end+start)/2;//取中间值
            if(key<arryas[min]) //若当前值 小于当前中间这个这个索引取值的话,则缩小结尾位置，让结束索引重新复制当前中间索引-1，在循环比较
            {
                end = min - 1;
            }
            else if(key > arryas[min])//若值大于中间索引值，则起始位置从当前位置+1开始重新比较
            {
                start = min + 1;
            }
            else
            {
                return min;//获取到当前索引
            }
        }
        return -1;
    }

    /**
     * @description 交换元素
     * @method  swrp
     * @param  [arr, i, j]
     * @return void
     * @date: 2018/8/31 10:04
     * @author:zhoujinbing
     */
    public static void swrp(Integer[] arr,int i,int j)
    {
        arr[i]^= arr[j];
        arr[j]^= arr[i];
        arr[i]^= arr[j];
    }

    /**
     * @description 直接插入排序
     * @method  insertSort
     * @param  [arrays]
     * @return void
     * @date: 2018/8/31 10:12
     * @author:zhoujinbing
     */
    public static void insertSort(Integer[] arrays) {
        int len = arrays.length;
        int insertNum;
        for (int i = 1; i < len; i++) {//因为第一次不用，所以从1开始
            insertNum = arrays[i];
            int j = i - 1;//序列元素个数
            while (j >= 0 && arrays[j] > insertNum) {//从后往前循环，将大于insertNum的数向后移动
                arrays[j + 1] = arrays[j];//元素向后移动
                j--;
            }
            arrays[j + 1] = insertNum;//找到位置，插入当前元素
        }
    }

}
